package object.content;

/**
 * 使用代码直观描述对象的组成部分
 *
 * @author <a href='https://gitee.com/hzf2281'>codefish</a>
 * @version 1.0.0
 * @since 2022/08/27 下午 01:55
 */
public class ObjectContent {

    public static void main(String[] args) {
        //new 一个对象，对象头占用内存16字节(8字节 mark word + 8字节的类型指针)
        Customer customer = new Customer();
        //对象实例的hash值存储在对象头的mark word部分
        int hashCode = customer.hashCode();
        //通过对象头中的类型指针信息，能够找到对象实例的类元信息
        Class<? extends Customer> customerClass = customer.getClass();
        //对象头中的mark word包含指向锁的指针信息和偏向锁偏向的线程ID
        synchronized (customer) {
            customer.enabled = false;
        }
        //对象头中的mark word存储对象的分代年龄，这个值大于15的对象会晋升到老年代
        System.gc();

    }


}


